package com.koron.operation.classes.shift.bean.vo;

import cn.hutool.core.util.StrUtil;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.koron.operation.classes.schedule.bean.po.ClassesStaff;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;
import java.util.List;

/**
 * 交接班记录导出数据
 * @author jzp
 * @since 2021/10/29
 */
@Data
public class ShiftRecordExportVO {

    /**
     * 值班单位名称
     */
    @ApiModelProperty("值班单位名称")
    private String deptName;


    /**
     * 值班地点名称
     */
    @ApiModelProperty("值班地点名称")
    private String locationName;

    /**
     * 值班开始时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @ApiModelProperty("值班日期")
    private Date startDate;

    /**
     * 班别名称
     */
    @ApiModelProperty("本值班次名称")
    private String thisName;

    /**
     * 值班开始时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    @ApiModelProperty("本值值班开始时间")
    private Date thisStartTime;

    /**
     * 值班结束时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    @ApiModelProperty("本值值班结束时间")
    private Date thisEndTime;

    @ApiModelProperty("本值人员列表")
    private String thisStaffStr;

    /**
     * 本值交班时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    @ApiModelProperty("本值实际交班时间")
    private Date thisTime;

    /**
     * 班别名称
     */
    @ApiModelProperty("下值班次名称")
    private String nextName;

    /**
     * 值班开始时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    @ApiModelProperty("下值值班开始时间")
    private Date nextStartTime;

    /**
     * 值班结束时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    @ApiModelProperty("下值值班结束时间")
    private Date nextEndTime;

    @ApiModelProperty("下值人员列表")
    private String nextStaffStr;

    /**
     * 下值接班时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    @ApiModelProperty("下值实际接班时间")
    private Date nextTime;

    public void setThisStaffStr(List<ClassesStaff> staffs) {
        this.thisStaffStr = toStaffStr(staffs);
    }

    public void setNextStaffStr(List<ClassesStaff> staffs) {
        this.nextStaffStr = toStaffStr(staffs);
    }

    public String toStaffStr(List<ClassesStaff> staffs) {
        StringBuilder str = new StringBuilder();
        if (CollectionUtils.isEmpty(staffs)) {
            return "";
        }
        for (ClassesStaff staff : staffs) {
            str.append(staff.getStaffName());
            if ("0".equals(staff.getType())) {
                str.append("|");
            } else {
                str.append(",");
            }
        }
        return StrUtil.strip(str, ",");
    }
}
